package com.example.producer;

import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;

/**
 * 消息生产者
 * 这里只是对投递消息的一个封装而已，可以直接调用模板发送消息的
 */
@Component
public class TestMessageProducer {

    /** rabbitmq消息模板 */
    @Autowired
    private AmqpTemplate rabbitTemplate;

    /** 初始化，负责检查生产者是否创建成功 ，没有其他的作用 */
    @PostConstruct
    public void init() {
        System.out.println("TestMessageProducer initialized!");
    }

    /** 发送消息，推送消息的时候需要调用这个方法，这里是推送字符串类型消息 */
    public void sendMessage(String message) {
        /** 先控制台打印 */
        System.out.println("Sending message: " + message);
        /** 使用消息模板转换并发送消息 语法： 交换机，路由，消息体 */
        rabbitTemplate.convertAndSend("testExchange", "testRoutingKey", message);
    }
}